home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / fbuilder / delphi / demos / testfrm.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  3KB  |  143 lines

  1. {*  FormulaBuilder 1.0            *}
  2. {*  YGB Software, Inc.            *}
  3. {*  Copyright 1995 Clayton Collie *}
  4.  
  5. {*  This unit implements a simple demo of FormulaBuilder using *}
  6. {*  DLL level calls                                            *}
  7.  
  8. unit Testfrm;
  9. interface
  10. uses
  11.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  12.   Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, Spin;
  13.  
  14. type
  15.   TForm1 = class(TForm)
  16.     BitBtn1: TBitBtn;
  17.     BitBtn2: TBitBtn;
  18.     ResultsPanel: TPanel;
  19.     ResultMemo: TMemo;
  20.     FunctionCountLabel: TLabel;
  21.     BitBtn3: TBitBtn;
  22.     Panel1: TPanel;
  23.     ListBox1: TListBox;
  24.     ComboBox1: TComboBox;
  25.     Label1: TLabel;
  26.     Label2: TLabel;
  27.     Bevel1: TBevel;
  28.     procedure BitBtn1Click(Sender: TObject);
  29.     procedure FormActivate(Sender: TObject);
  30.     procedure FormDeactivate(Sender: TObject);
  31.     procedure ListBox1DblClick(Sender: TObject);
  32.     procedure ListBox1Click(Sender: TObject);
  33.     procedure FormCreate(Sender: TObject);
  34.     procedure BitBtn3Click(Sender: TObject);
  35.     procedure ComboBox1Enter(Sender: TObject);
  36.   private
  37.     { Private declarations }
  38.     fHandle : integer;
  39.     ResultBuf : array[0..255] of char;
  40.     Procedure DisplayError(const ecode : integer);
  41.   public
  42.     { Public declarations }
  43.   end;
  44.  
  45. var
  46.   Form1: TForm1;
  47.  
  48. implementation
  49. uses
  50.   fbcalc,funcdlg;
  51.  
  52. {$R *.DFM}
  53. CONST
  54.   EXPRFILENAME = 'Exprlist.txt';
  55.  
  56. procedure TForm1.BitBtn1Click(Sender: TObject);
  57. var expstr : String;
  58.     ec     : integer;
  59.     res    : PChar;
  60.  
  61. begin
  62.   ExpStr := ComboBox1.Text + #0;
  63.   if Length(expStr) = 0 then
  64.   begin
  65.     DisplayError(EXPR_BAD_EXPRESSION);
  66.     exit;
  67.   end;
  68.   res := Resultbuf;
  69.   ec  := fbSetExpression(fHandle,@expStr[1]);
  70.   if ec = EXPR_SUCCESS then
  71.   begin
  72.     ec := fbEvaluate(fHandle,res,sizeof(resultbuf));
  73.     if ec <> EXPR_SUCCESS then
  74.        DisplayError(ec)
  75.      else
  76.        ResultMemo.Text := Strpas(res);
  77.   end
  78.  else
  79.   DisplayError(ec); 
  80. end;
  81.  
  82. Procedure TForm1.DisplayError(const ecode : integer);
  83. var ErrorStr : array[0..255] of char;
  84.     p        : pchar;
  85.     s        : string;
  86. begin
  87.   MessageBeep(mb_iconhand);
  88.   p := @ErrorStr;
  89.   FBGetErrorString(ecode,ErrorStr,sizeof(ErrorStr));
  90.   resultMemo.Text := Strpas(p);
  91. end;
  92.  
  93. procedure TForm1.FormActivate(Sender: TObject);
  94. begin
  95.   InitFbuilder; { Make sure its loaded }
  96.   fHandle := FBInitExpression(longint(self));
  97.   if fHandle <> -1 then
  98.      FunctionCountLabel.Caption := 'Registered Functions : '+
  99.                                    IntToStr(FBGetFunctionCount)
  100.    else
  101.      FunctionCountLabel.Caption := '????';
  102. end;
  103.  
  104. procedure TForm1.FormDeactivate(Sender: TObject);
  105. begin
  106.   FBFreeExpression(fHandle);
  107.   FreeFBuilder; {Unload DLL}
  108. end;
  109.  
  110. procedure TForm1.ListBox1DblClick(Sender: TObject);
  111. begin
  112.   with listbox1 do
  113.        ComboBox1.Text := Items[ItemIndex];
  114. end;
  115.  
  116. procedure TForm1.ListBox1Click(Sender: TObject);
  117. begin
  118.    with listbox1 do
  119.    ComboBox1.Text := Items[ItemIndex];
  120. end;
  121.  
  122. procedure TForm1.FormCreate(Sender: TObject);
  123. begin
  124.   If FileExists(EXPRFILENAME) then
  125.   begin
  126.     ListBox1.Clear;
  127.     ListBox1.Items.LoadFromFile(EXPRFILENAME);
  128.   end;
  129. end;
  130.  
  131. procedure TForm1.BitBtn3Click(Sender: TObject);
  132. begin
  133.   Functiondlg.ShowModal;
  134. end;
  135.  
  136. procedure TForm1.ComboBox1Enter(Sender: TObject);
  137. begin
  138.   With ComboBox1 do
  139.     Items.Add( ComboBox1.Text );
  140. end;
  141.  
  142. end.
  143.